%{

#include <stdio.h>
#include "PPPparser.tab.h"

int line_no = 1; // liczba linii

%}

A [aA]
B [bB]
C [cC]
D [dD]
E [eE]
F [fF]
G [gG]
H [hH] 
I [iI]
J [jJ]
K [kK]
L [lL]
M [mM]
N [nN]
O [oO]
P [pP]
Q [qQ]
R [rR]
S [sS]
T [tT]
U [uU]
V [vV]
W [wW]
X [xX]
Y [yY]
Z [zZ]
_ [_]
KOMENTARZ "{"[^}]*"}"

%%

start							{ printf("| start\n"); return(START);}
stop							{ printf("| stop\n"); return(STOP);}

nowa_zmienna					printf("| nowa_zmienna\n"); return(NOWA_ZMIENNA);
logiczna						printf("| logiczna\n"); return(TYP_LOGICZNA);
calkowita						printf("| calkowita\n"); return(TYP_CALKOWITA);
rzeczywista						printf("| rzeczywista\n"); return(TYP_RZECZYWISTA);
napis							printf("| napis\n"); return(TYP_NAPIS);

dla								printf("| dla\n");return(DLA);
do    							printf("| DO\n");return(DO); 
zrob							printf("| ZROB\n");return(ZROB);
koniec_dla						printf("| KONIEC_DLA\n");return(KONIEC_DLA);

jesli 							printf("| jesli : \n");return(JESLI);
jesli_nie						printf("| jesli NIE : \n");return(JESLI_NIE);

wypisz							printf("| wypisz : %s\n", yytext);return(WYPISZ);

\$[a-zA-Z]([a-zA-Z0-9])+  		yylval.sval = strdup(yytext); printf("| id %s\n", yytext); return(ID_ZMIENNEJ);


":="    						return(PRZYPISANIE);
KOMENTARZ  						;

[0-9]+    						{yylval.sval = yytext; printf("| stala calkowita %s\n", yytext); return(STALA_CALKOWITA);}
[0-9]+\.[0-9]+   				{yylval.sval = yytext; printf("| stala rzeczywista %s\n", yytext); return(STALA_RZECZYWISTA);}
"prawda"|"falsz"				{yylval.sval = (!strcmp(yytext,"prawda")) ? "true" : "false"; printf("| stala logiczna %s\n", yytext); return(STALA_LOGICZNA);};
\"[a-zA-Z0-9 ]+\"				{
	yylval.sval = strdup(yytext);
	printf("| stala napis %s\n", yytext); 
	return(STALA_LOGICZNA);};

"=="    						return(EQUAL);
"!="    						return(NEQUAL);
">="   							return(WBR);
">"    							return(WIEKSZY);
"<="    						return(MBR);
"<"    							return(MNIEJSZY);

"("    							return(L_NAWIAS); 	//LPAREN
")"    							return(P_NAWIAS);		//PPAREN


"-"    							return(MINUS);
"+"    							return(PLUS);
"/"    							return(DIV);
"*"    							return(MULTI);
\n     { line_no++; printf("+-- linia: %d:\n", line_no);}


[ \t\f]    ;

.    ;

%%

int commenteof()
{
 fprintf (stdout, "unexpected EOF inside comment at line %d\n",
  line_no);
 exit (1);
}

int yywrap ()
{
 return (1);
}

